package com.zhoug.fileselector.beans;


import com.zhoug.common.annotation.Filetype;
import com.zhoug.common.content.FileType;
import com.zhoug.common.utils.CollectionUtils;
import com.zhoug.common.utils.JsonUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 定义文件 用于文件播放
 *
 * @Author HK-LJJ
 * @Date 2020/1/13
 * @Description
 */
public class ZFile implements Serializable {

    /**
     * 文件播放url,可以是本地路径和网络地址
     */
    private final String url;
    /**
     * 文件类型
     */
    private final @Filetype
    int fileType;



    public ZFile(String url, int fileType) {
        this.url = url;
        this.fileType = fileType;
    }

    public String getUrl() {
        return url;
    }

    public int getFileType() {
        return fileType;
    }

    public boolean isImage() {
        return fileType == FileType.IMAGE;
    }

    public boolean isVideo() {
        return fileType == FileType.VIDEO;
    }

    public boolean isAudio() {
        return fileType == FileType.AUDIO;
    }

    /**
     * LocalMedia 转换为ZFile
     * @param localMedia
     * @return
     */
    public static ZFile toZFile(LocalMedia localMedia) {
        if (localMedia == null) {
            return null;
        }
        return new ZFile(localMedia.getPath(), localMedia.getFileType());
    }

    /**
     *  LocalMedia集合转换为ZFile集合
     * @param localMedias
     * @return
     */
    public static List<ZFile> toZFiles(List<LocalMedia> localMedias) {
       if(CollectionUtils.notEmpty(localMedias)){
           List<ZFile> result=new ArrayList<>();
           for(LocalMedia localMedia :localMedias){
               result.add(toZFile(localMedia));
           }
           return result;
       }else{
           return null;
       }
    }



    @Override
    public String toString() {
        return JsonUtils.toJson(this);
    }

}
